package cn.lingyangwl.agile.infra.weixin.mp.service;

import cn.lingyangwl.agile.infra.weixin.mp.model.entity.MpUser;
import cn.lingyangwl.agile.infra.weixin.mp.model.rqrs.MpUserPageReq;
import cn.lingyangwl.agile.infra.weixin.mp.model.rqrs.MpUserResp;
import cn.lingyangwl.agile.infra.weixin.mp.model.rqrs.MpUserUpdateReq;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import me.chanjar.weixin.mp.bean.result.WxMpUser;

import java.util.List;
/**
 * 公众号粉丝
 *
 * @author shenguangyang
 */
public interface MpUserService extends IService<MpUser> {
    /**
     * 分页查询 公众号粉丝
     *
     * @return 返回分页数据
     */
    IPage<MpUserResp> pageUser(MpUserPageReq query);

    /**
     * 保存 公众号粉丝
     *
     * @param req 新增的记录
     * @return 是否保存成功
     */
    boolean saveUser(String mpAppId, WxMpUser req);

    /**
     * 更新 公众号粉丝
     *
     * @param req 修改的记录
     * @return 是否更新成功
     */
    boolean updateUser(MpUserUpdateReq req);
    
    /**
     * 通过id获取 公众号粉丝
     *
     * @param id 主键
     * @return 是否删除成功
     */
    MpUser getUserById(Long id);

    /**
     * 通过id删除 公众号粉丝
     *
     * @param id 主键
     * @return 是否删除成功
     */
    boolean deleteUserById(Long id);
    
    /**
     * 通过id删除 公众号粉丝
     *
     * @param ids 主键集合
     * @return 是否删除成功
     */
    boolean deleteUserByIds(List<Long> ids);

    void updateUserUnsubscribe(String mpAppId, String openId);

    void syncUser();
}
